package skyhyun;

public class J19_callBy {
	
	// call by value vs call by reference
	// 값 이동시키기 swap
	// a = 3, b = 5 --> swap(3, 5) --> a = 5, b = 3
	
	public static void main(String[] args) {
		
		int a = 3, b = 5;			// 기본 자료형
		int[] aa = { 3 };			// 참조 자료형
		int[] bb = { 5 };
		System.out.println(a + ", " + aa + ", " + aa[0]);
		
		System.out.println("swap 호출 전 : a = " + a + ", b = " + b);
		System.out.println("swap 호출 전 : aa = " + aa[0] + ", bb = " + bb[0]);
		
		swap ( a , b );				// 기본 자료형
		swap ( aa , bb );			// 참조 자료형
		swap ( aa[0] , bb[0] );
		System.out.println("swap 호출 후 : a = " + a + ", b = " + b);
		System.out.println("swap 호출 후 : aa = " + aa[0] + ", bb = " + bb[0]);
	}

	 static void swap(int x, int y) {
		int imsi = 0;
			imsi = x;
			x = y;
			y = imsi;
		System.out.println("swap 실행 중 : a = " + x + ", b = " + y);
	}
	 
	 static void swap(int[] x, int[] y) {
		 int tmp = x[0];
		 x[0] = y[0];
		 y[0] = tmp;
		 System.out.println("swap 실행 중 : aa = " + x[0] + ", bb = " + y[0]);
	 }

}

